home *** CD-ROM | disk | FTP | other *** search
/ Scene Storm / Scene Storm - Volume 1.iso / coding / c / amiexpress / source / doors / hacker / hacker4.5 next >
Encoding:
Text File  |  1992-12-26  |  57.5 KB  |  1,783 lines

  1. /* C-Net Hacker v4.5 Beta
  2.  
  3.    Original programming/concept by : Patrick Baker
  4.    Modifications for v4.0 by       : Bob Maple
  5.    Modifications for v4.5 by       : Joseph Barrero
  6.  
  7.    This P-File is authorized to be run on legal, LEGITIMATE C-Net AMIGA
  8.    systems ONLY.  It is not authorized to be run on Silicon Valley BBS
  9.    of Colorado.  You may modify this however you like for your own use,
  10.    but it can only be re-distributed in it's original form.
  11.  
  12.    Found a bug?  Leave EMail to 'Diamond Back' on Future World, or call
  13.                     THE FLIPSIDE (305)596-6711.
  14.  
  15. */
  16. parse arg node
  17. options results
  18. nodeid = "AERexxControl"node
  19.  
  20. tr=transmit;hk=getchar;pm=prompt;sendstring=sendmessage;ss=sendstring;gu=getuser
  21. address value nodeid
  22. signal on syntax;signal on error;signal on ioerr;signal on halt
  23.  
  24.  
  25. save   = 'DOORS:Hacker/'  /*  Main path for all Hacker files  */
  26. play   = save'Players/'                /*  Where user files are stored     */
  27. misc   = save'Misc/'                   /*  BBS intro files, menus, etc..   */
  28. mess   = save'MESSAGES/'               /*  Inter-User Email                */
  29. phones = save'PHONEs/'                 /*  Where BBS numers are kept       */
  30. bnk    = save'BANK/'                   /*  People's banking accounts       */
  31. minbyte= 150000         /*  Minimum amount of memory that needs to be free */
  32.                         /*  at all times during the game                   */
  33. BEGIN:
  34. if storage() < minbyte then do;tr 'Not enough memory to run the game safely!'
  35. tr 'Either contact your sysop or if this is a multiline BBS, wait for another'
  36. tr 'user to finish playing a game (if applicable) and try again.';shutdown;exit;end
  37.  
  38. call open set, (misc'rxx.setup'), 'R';boom=0;do until boom=1;junk=readln(set)
  39. interpret junk;end;call close set
  40.  
  41. LOGIN:
  42.  
  43. if ~exists(play''name) then do
  44. Tr 'Welcome 'NAME'.. You must be a new Hacker.'
  45. tr '   Enter an alias to use in the game:'
  46. Query'-> ';ALIAS = UPPER(result)
  47. if ALIAS = '' | alias = '###PANIC' then call quickexit
  48.  
  49. if exists(play'TOTAL') then do;call open file, (play'TOTAL'), 'R';TOTALUSERS = readln(file);call close file;end
  50. if ~exists(play'TOTAL') then do;call open file, (play'TOTAL'), 'W';call writeln file, 0;call close file;end
  51.  
  52. if exists(play'ALIASES') then do;call open file, (play'TOTAL'), 'R'
  53. totalusers = readln(file);call close file;call open file, (play'ALIASES'), 'R'
  54. do i = 1 to TOTALUSERS;tempa = readln(file);j = readln(file)
  55. if upper(tempa) = alias then do;Tr 'That alias already exists, pick another.'
  56. call LOGIN;end;end;call close file;end
  57.  
  58. tr 'Setting up an account...'
  59.  
  60. call open file, (play'TOTAL'), 'W';TOTALUSERS = TOTALUSERS + 1;call writeln file, TOTALUSERS;call close file
  61. call open file, (mess''name), 'W';call writeln file, '0';call close file
  62. call open file, (play''NAME), 'W';call savestats;call close file
  63.  
  64. if ~exists(play'ALIASES') then do;call open file, (play'ALIASES'), 'W'
  65. call writeln file, ALIAS;call writeln file, NAME;call close file;end
  66. else do;call open file, (play'ALIASES'), 'A';call writeln file, ALIAS
  67. call writeln file, NAME;call close file;end
  68.  
  69. if exists(play'REALNAMES') then do;call open file, (play'REALNAMES'), 'A'
  70. call writeln file, NAME;call close file;end
  71.  
  72. if ~exists(play'REALNAMES') then do;call open file, (play'REALNAMES'), 'W'
  73. call writeln file, NAME;call close file;end
  74.  
  75. ss 'Do you wish to read the instructions of the game? (Y/n) : '
  76. hk;ans=result;if ans~='N' then showfile misc'sys.docs';else tr 'No.'
  77.  
  78. END
  79.  
  80. if exists(misc'winners') then do;showfile misc''winners;Query RETURN;tr cls;end
  81. call open file, (play'TOTAL'), 'R';TOTALUSERS = readln(file);call close file
  82. call open file, (play''NAME), 'R';call readstats;call close file
  83. bg = 0
  84. call getdate
  85. call checklplay
  86. if access=23 then call goon
  87. if totalplays < 1 then call goon
  88. GOON:
  89. if ~exists(mess''name) then do;call open gag, (mess''name), 'W'
  90. call writeln gag, '0';call close gag;end
  91. tr 'Welcome back, 'name'.Checking for inter-hacker messages..'
  92. call open file, (MESS''NAME), 'R';messtotal = readln(file)
  93. if messtotal=0 then do;call close file;call gooon;end
  94. if messtotal > 0 then do
  95. Tr 'You have 'messtotal' messages.';Query RETURN
  96. do u = 1 to MESSTOTAL;from=readln(file)
  97. Tr 'Transmission #'u', From 'from':'
  98. do i = 1 to 3;line.i=readln(file);end
  99. Tr line.1; tr line.2;tr line.3;Query RETURN;end
  100. Tr 'End of Messages...                          ';call close file;end
  101. call open file, (MESS''NAME), 'W';call writeln file, '0';call close file
  102.  
  103. GOOON:
  104. call CONVERSION
  105.  
  106. if money = 0 & savings < 100 then do
  107.    loan = random(1,250,time('s'))
  108.    Tr 'You are broke 'alias'! The HAA gives you a loan of $'loan'.'
  109.    money = money + loan;bankmoney = bankmoney - loan
  110.    Query RETURN
  111. end
  112. LOTTO:
  113. if money < 2 then do;tr 'You have no money to play the lotto.';call main;end
  114. Tr 'Hacker-Lotto:The hacker lottery costs $72.00 per ticket.'
  115. Tr 'You currently have $'money'.00 in your pocket.'
  116. ss 'Do you wish to play? (y/N) ';hk;tempmon=0
  117. ans = upper(result);if ans = '#' then do; shutdown;exit; end;
  118. if ans ~= 'Y' then do;tr 'No';call checkwardial;call MAIN;end;tix=money/2
  119. if money > 198 then tix=99;if length(tix)=4 then tix=left(tix,2)
  120. if length(tix)=3 then tix=left(tix,1)
  121. tr 'Yes'
  122. Query 'How many tickets (Maximum of 'tix')? '
  123. numtickets = upper(result)
  124. if numtickets <= 99 then do
  125.    if numtickets*2 > money then do
  126.       Tr 'You do not have enough money!'
  127.       Query RETURN
  128.       call MAIN
  129.    end
  130.    tr ''
  131.    money = money - numtickets*2
  132.    bankmoney = bankmoney + numtickets*2
  133.    do i = 1 to numtickets
  134.       ranwin = random(1,4,time('s'))
  135.       if ranwin = 1 then do
  136.          moneywon = random(1,100,time('s'))
  137.          Tr 'Ticket #'left(i,2)' Winner of $'moneywon'!'
  138.          money = money + moneywon;tempmon=tempmon+moneywon
  139.          bankmoney = bankmoney - moneywon
  140.       end
  141.       if ranwin = 2 | ranwin = 3 | ranwin = 4 then do
  142.          Tr '#'left(i,2)' Loser!'
  143.       end
  144.    end
  145. end
  146.  
  147. tr 'You spent $'numtickets*2'.00 on lottery tickets, and won a total of $'tempmon'.00.'
  148. temp=tempmon-(numtickets*2);tr 'You made a "profit" of $'temp'.00.'
  149. query return
  150. call checkwardial
  151. call MAIN
  152.  
  153.  
  154. MAIN:
  155. if mk = '' then mk = 0;if mkused = '' then mkused = 0
  156. call nc;call conversion
  157. call open file, (play''NAME), 'W';call savestats;call close file
  158. call open file, (play''NAME), 'R';call readstats;call close file
  159.  
  160. Query 'SYS:3'MAXTURNS-MAINCOUNTER'> '
  161. ANS=upper(result);call NC
  162.  
  163. if ANS = 'LAST' then call LASTFIGHTS
  164. if ANS = 'WHO' then do;/*bbscommand who;*/tr '';query return;call main;end
  165. if left(ans,3)='OLM' then do;/*bbscommand ans;*/tr '';query return;call main;end
  166. if ANS = 'BANK' then call bank
  167. if left(ANS,3) = 'HAC' then do;call turns;call HACKOTHER;call main;end
  168. if ANS = 'SPY' then do;call turns;call SPY;end
  169. if ANS = 'ENDCLI' then call BEXIT
  170. if ANS = 'Q' | ans = 'QUIT' then call BEXIT
  171. if ANS = 'DIR' | ANS = '?' then do; showfile misc'sys.maindir';tr '10 files - 1 directory - 173 blocks - 88342 bytes - 'megs'MB Free';call main;end
  172. if ans = 'HAA' then do
  173.    Tr 'Connecting to the Hackers Association of America....'
  174.    call turns;call HAA
  175. end
  176.  
  177. if ANS = 'SCAN' then do;call turns;call scan;call main;end
  178. if (Access = 23) & (ANS = 'CHECK') then do;wd=1;call checkwardial;call main;end
  179. if ANS = 'CD DIAL' | ans = 'DIAL' then call DIAL
  180. if ANS = 'USER' then do;call USERLIST;call MAIN;end
  181. if ANS = 'TRANS' then do;call SENDMESS;call MAIN;end
  182. if ANS = 'STATS' then do;call YOURSTATS;call MAIN;end
  183. tr 'Unknown command 'ans'.';call MAIN
  184.  
  185. LASTFIGHTS:
  186. if ~exists(play'LAST10') then do
  187.    tr 'No fights yet..  Try fighting another user.'
  188.    Query RETURN;call MAIN
  189. end
  190. tr '  Last 10 User vs. User fight results:';showfile play'last10'
  191. tr '';Query RETURN;call MAIN
  192.  
  193. HACKOTHER:
  194. Tr 'Attack another user:'
  195. if megs=0 then do;tr 'Your hard drive is totaled!  Fix it first.';tr '';query return
  196. call main;end
  197. txt='Hack';call listusers;if toget='###' then call main
  198. call open file, (play''toget),'R'
  199. call readostats;call close file;oname=toget
  200.  
  201. if OMEGS = 0 then do
  202.    Tr 'He is already trashed, try hacking some boards!';tr ''
  203.    Query RETURN;call MAIN
  204. end
  205.  
  206. CALL OCONVERSION2
  207.  
  208. otnm = left(otnm,20)
  209. ODRIVENAME = left(ODRIVENAME,20)
  210. Stnm = left(tnm,20)
  211. SDRIVENAME = left(DRIVENAME,20)
  212.  
  213. if olfght = ALIAS then do
  214.    showfile misc'sys.hacklaw'
  215.    tr '';query RETURN;call MAIN
  216. end
  217.  
  218. Tr Oalias', 'OMegs' Megs'
  219. Tr 'Hardware: 'ODRIVENAME'  Software: 'otnm
  220. Tr ''
  221. Tr '                   --VS--'; tr ''
  222. Tr alias', 'megs' Megs'
  223. Tr 'Hardware: 'SDRIVENAME'  Software: 'Stnm
  224.  
  225. ss 'Are you sure you want to fight? (y/N) '
  226. hk;ANS = result;if ans='#' then call quickexit
  227. call NC;if ans ~= 'Y' then call MAIN
  228. Tr 'Yes';oldmegs = megs;othermegs = omegs
  229. call HACKHIM
  230.  
  231.  
  232. HACKHIM:
  233. YOURTEMPMEGS = MEGS
  234. Tr OALIAS': 'OMEGS' Megs    You: 'MEGS' Megs'; tr ''
  235. Tr 'No viruses allowed here! This is a fight of power!'; tr ''
  236. Tr '[1] Fight     [2] Run'
  237. Query '[1,2] '
  238. ANS = upper(result);call NC
  239. if ans = '' | ans='Q' then call HACKHIM
  240. if ANS = '2' then do
  241.    ranhit = random(1,10,time('s'))
  242.    if ranhit < odrtyp then do
  243.       Tr '&^!@*&%$#*^%(*^%!(*@^%$#*&%$&(^%!@)*#%(&^%$!(@^#%'
  244.       Tr 'Wow!  What a blow!'
  245.       dam = random(1,omegs,time('s'));if dam > megs then dam = megs;megs = megs - dam
  246.       if megs < 0 then do; tr '';Tr 'You''re WASTED!'; end
  247.       tr '';Tr dam' Megs were trashed on your drive!'
  248.       OMONEY = OMONEY + MONEY%2;if MONEY > 1 then MONEY = MONEY%2
  249.       If megs <= 0 then do
  250.  
  251. txt = ALIAS' fought 'OALIAS' on 'DATE' and LOST!'
  252. call toptensave
  253.  
  254. oxper = oxper + YOURTEMPMEGS*100
  255. if ttyp > ottyp then do
  256.    ottyp = ttyp
  257.    if ttyp > 1 then ttyp = ttyp - 1
  258.    if ttyp < 1 then ttyp = 1
  259. end
  260. if drty > odrtyp then do
  261.    odrtyp = drty
  262.    if drty > 1 then drty = drty - 1
  263.    if drty < 1 then drty = 1
  264. end
  265. if SCA > 1 then do
  266.    OSCA = OSCA + SCA;SCA = SCA%2
  267. end
  268. if TROJ > 1 then do
  269.    OTROJ = OTROJ + TROJ;TROJ = TROJ %2
  270. end
  271. if BW > 1 then do
  272.    OBW = OBW + BW;BW = BW %2
  273. end
  274. end
  275.  
  276. TOTALLOSS = TOTALLOSS + 1
  277. otwin = otwin + 1;olfght = ALIAS
  278. otmcr = otmcr+DAM;call WRITEHIM;call CONVERSION
  279. end
  280. TOTALLOSS = TOTALLOSS + 1
  281. otwin = otwin + 1
  282. if money > 1 then do
  283.    moneylost = random(1,100,time('s'))
  284.    if moneylost > money then moneylost = money
  285.    money = money - moneylost+10
  286.    OMONEY = OMONEY + MONEYLOST
  287.    Tr 'You just lost $'moneylost+10'!'
  288.    call WRITEHIM;Tr ''
  289.  end
  290. call MAIN
  291. END
  292.  
  293. if ANS = '1' then do
  294.    TOHIT = random(1,10,time('s'))
  295.    if TOHIT < ttyp+1 then do
  296.       ydam = random(1,megs,time('s'));if ydam > OMEGS then ydam = OMEGS
  297.       OMEGS = OMEGS - YDAM
  298.       tr '';Tr 'You plaster 'YDAM' megs on his drive!'
  299.       if OMEGS <= 0 then do
  300.  
  301. txt = ALIAS' fought 'OALIAS' on 'DATE' and WON!'
  302. call toptensave
  303.  
  304. Tr '';Tr 'He is obliterated!'
  305. xrp = xrp + othermegs*1000
  306. money = money + OMONEY%2
  307. findmoney = omoney%2
  308. omoney = omoney - OMONEY%2
  309. Tr 'You get 'othermegs*1000' experience points.'
  310. if OMONEY > 0 then Tr 'You find $'FINDMONEY'!'
  311. if OTROJ > 0 then Tr 'You find 'OTROJ' Trojans!'
  312. if OBW > 0 then Tr 'You find 'OBW' Byte Warriors!'
  313. if OSCA > 0 then Tr 'You find 'OSCA' SCAs!'
  314.  
  315. if ottyp > ttyp then do
  316.    ttyp = ottyp
  317.    if ottyp > 1 then ottyp = ottyp - 1
  318.    if ottyp < 1 then ottyp = 1
  319. end
  320. if odrtyp > drty then do
  321.    drty = odrtyp
  322.    if odrtyp > 1 then odrtyp = odrtyp - 1
  323.    if odrtyp < 1 then odrtyp = 1
  324. end
  325. if OSCA >= 1 then do
  326.    SCA = OSCA + SCA
  327.    OSCA = OSCA%2
  328.    if OSCA <=1 then OSCA = 0
  329. end
  330. if OTROJ >= 1 then do
  331. TROJ = OTROJ + TROJ
  332. OTROJ = OTROJ %2
  333. if OTROJ <=1 then OTROJ = 0
  334. end
  335. if OBW >= 1 then do
  336. BW = BW + OBW
  337. OBW = OBW %2
  338. if OBW <=1 then OBW = 0
  339. end
  340. TOTALWINS = TOTALWINS + 1
  341. otloss = otloss + 1
  342. call WRITEHIM
  343. end
  344. end
  345.  
  346. if TOHIT >= ttyp+1 then do
  347.    ranmess = random(1,3,time('s'))
  348.    if ranmess = 1 then Tr 'You missed him!'
  349.    if ranmess = 2 then Tr 'He eludes you!'
  350.    if ranmess = 3 then Tr 'Nothing happens!'
  351. end
  352. Tr ''
  353. OTOHIT = random(1,10,time('s'))
  354. if OTOHIT < ottyp+1 then do
  355.    hdam = random(1,Omegs,time('s'))
  356.    if hdam > MEGS then hdam = MEGS
  357.    MEGS = MEGS - hDAM
  358.    Tr 'He smashes 'hDAM' megs on your drive!'
  359.  
  360.    if MEGS <= 0 then do
  361.  
  362. txt = ALIAS' fought 'OALIAS' on 'DATE' and LOST!'
  363. call toptensave
  364.  
  365.  ranlose = random(1,5,time('s'))
  366.  if ranlose = 1 then Tr 'You are TOAST!'
  367.  if ranlose = 2 then Tr 'He over powers you!'
  368.  if ranlose = 3 then Tr 'You didnt have a chance!'
  369.  if ranlose = 4 then Tr ALIAS's funeral services are Thursday at 2pm!'
  370.  if ranlose = 5 then Tr OALIAS' devastates your entire drive!'
  371.  oxper = oxper + oldmegs*1000
  372.  Omoney = Omoney + MONEY%2
  373.  money = money - MONEY%2
  374.  
  375.  if ttyp > ottyp then do
  376.     ottyp = ttyp
  377.     if ttyp > 1 then ttyp = ttyp - 1
  378.     if ttyp < 1 then ttyp = 1
  379. end
  380.  if drty > odrtyp then do
  381.     odrtyp = drty
  382.     if drty > 1 then drty = drty - 1
  383.     if drty < 1 then drty = 1
  384.  end
  385.  if SCA >= 1 then do
  386.     OSCA = OSCA + SCA
  387.     SCA = SCA%2
  388.     if SCA <=1 then SCA = 0
  389.  end
  390.  if TROJ >= 1 then do
  391.     OTROJ = OTROJ + TROJ
  392.     TROJ = TROJ %2
  393.     if TROJ <=1 then TROJ = 0
  394.  end
  395.  if BW >= 1 then do
  396.     OBW = BW + OBW
  397.     BW = BW %2
  398.     if BW <=1 then BW = 0
  399.  end
  400.     otwin = otwin + 1
  401.     TOTALLOSS = TOTALLOSS + 1
  402.     call WRITEHIM
  403.     end
  404. end
  405.  
  406. if OTOHIT >= ottyp+1 then do
  407.    ranmess = random(1,5,time('s'))
  408.    if ranmess = 1 then Tr 'He doesnt do anything!'
  409.    if ranmess = 2 then Tr 'You out witted him!'
  410.    if ranmess = 3 then Tr 'Nothing happens to you!'
  411.    if ranmess = 4 then Tr 'Your drive is safe this time!'
  412.    if ranmess = 5 then Tr 'Your drive is safe this time!'
  413. end
  414. Query RETURN
  415. call HACKHIM
  416. end
  417.  
  418. WRITEHIM:
  419. olfght = ALIAS
  420. call open file, (play''ONAME),'W'
  421. call saveostats
  422. call close file
  423. LASTFIGHT = OALIAS
  424. call open file, (play''NAME), 'W'
  425. call savestats
  426. call close file
  427. Query RETURN;tr '';tr '';tr 'Exiting Hacker combat..'; tr ''
  428. call MAIN
  429.  
  430. HAA:
  431. showfile misc'sys.haa'
  432. tr '';ss '  [HAA Main]: '
  433. hk;ANS = upper(result);call NC
  434.  
  435. if ANS='Q' | ans='8' | ans='CD /' then do;Tr 'Disconnecting..';call MAIN;end
  436.  
  437. if ans = '1' then call fixdrive
  438.  
  439. if ans = '2' then do
  440.    if money <= 0 then do
  441.       Tr 'You need money first!!'; tr ''
  442.       Query RETURN;call HAA
  443.    end
  444.    call CREDITCARDS
  445. end
  446.  
  447. if ANS = '3' then do
  448.    showfile misc'sys.terminal'
  449.    Tr '';Tr 'You are currently using 'tnm' and have $'money'.'; tr ''
  450.    Query 'Terminals (S=Sell, Q=Quit)? ';ANS=upper(result);call NC
  451.    if ans = ttyp then do
  452.       TR '';Tr 'You are already using 'tnm'!'; tr ''
  453.       Query RETURN;call HAA
  454.    end
  455.    if ans = 'Q' | ans = '' then call HAA
  456.    if ans = 'S' then do
  457.       if ttyp=1 then do;tr '';tr 'You have the worst term!  Selling not possible.';call haa;end
  458.       ans=ttyp;call termcost;tr '';tr 'The HAA will give you $'cost/2' for your 'tnm'.'
  459.       ss 'Do you still wish to sell it?  (y/N) ';hk;ans=result
  460.       if ans ~='Y' then call haa;tr 'Sold.';money=money+(cost/2);ttyp=1;call conversion;call haa
  461.    end
  462.    if ans = '1' | ans < ttyp then do
  463.       if ans = ttyp then do; Tr '';Tr 'You already have that!'; end
  464.       if ans < ttyp then do; Tr '';Tr 'That is a worse terminal than what you have!'
  465.       tr '';Query RETURN
  466.       call HAA
  467.    end
  468.  if ans > 1 & ans < 10 then do
  469.    call termcost
  470.  
  471.    if money < cost then do
  472.       Tr '';tr 'You do not have enough money!'
  473.       Tr '';Query RETURN
  474.       call HAA
  475.    end
  476.    money = money - cost
  477.    bankmoney = bankmoney + cost
  478.    ttyp = ans;call conversion
  479.    Tr '';Tr tnm' bought for the price of $'cost'.'; tr ''
  480.    Query RETURN
  481.  end
  482.    call HAA
  483. end
  484.  
  485. if ans = '4' then do
  486.    showfile misc'sys.hardware'
  487.    Tr '';Tr 'You are currently using a 'drivename' and have $'money'.'
  488.    Tr '';Query 'Hardware (S=Sell, Q=Quit)? '
  489.    ANS=upper(result);call NC
  490.    if ans='S' then do
  491.       if drty=1 then do;tr '';tr 'You are using the worst backup method! Selling not possible.';call haa;end
  492.       ans=drty;call hardcost;tr '';tr 'The HAA will give you $'cost/2' for your 'drivename'.'
  493.       ss 'Do you still wish to sell it?  (y/N) ';hk;ans=result
  494.       if ans ~='Y' then call main;tr 'Sold.';money=money+(cost/2);drty=1;call conversion;call haa
  495.    end
  496.    if ans = drty then do
  497.       Tr '';Tr 'You are already using 'drivename'!'; tr ''
  498.       Query RETURN;call HAA
  499.    end
  500.    if ans = 'Q' | ans = '' then call HAA
  501.    if ans = '1' | ans < drty then do
  502.       if ans = ttyp then do; tr '';Tr 'You already have that!';end
  503.       if ans < ttyp then do; tr '';Tr 'That backup is worse than what you have!';end
  504.       Tr '';Query RETURN
  505.       call HAA
  506.    end
  507.  if ans >= 2 & ans <= 7 then do
  508.     call hardcost
  509.  end
  510.  
  511.    if money < cost then do
  512.       TR '';Tr 'You do not have enough money!'; tr ''
  513.       Query RETURN;call HAA
  514.    end
  515.  
  516.    money = money - cost;bankmoney = bankmoney + cost
  517.    drty = ans;call conversion; tr ''
  518.    Tr drivename' Backup bought for the price of $'cost'!'; tr ''
  519.    Query RETURN
  520.    call HAA
  521. end
  522.  
  523. if ans = '5' then do
  524.    showfile misc'sys.virus'
  525.    Tr '';Tr 'You have $'money'.00'; tr ''
  526.    Query 'Viruses (Q=Quit)? ';ANS=upper(result);call NC
  527.    if ans = 'Q' | ans = '' then call HAA
  528.    if ans = 1 then cost = 100;if ans = 2 then cost = 1000
  529.    if ans = 3 then cost = 2500
  530.    if money < cost then do
  531.       Tr '';Tr 'You do not have enough money'
  532.       Tr '';Query RETURN;call HAA
  533.    end
  534.    if ans = 1 then virusbought = 'Byte Warrior'
  535.    if ans = 2 then virusbought = 'SCA';if ans = 3 then virusbought = 'Trojan'
  536.  
  537.    Tr '';Query 'Buy how many? '
  538.    numbought = upper(result);call NC
  539.    if numbought = '' | numbought ~< 99 then call HAA
  540.  
  541.    if money < numbought * cost then do
  542.       Tr 'You do not have enough money!'; tr ''
  543.       Query RETURN;call HAA
  544.    end
  545.    totalcost = numbought * cost
  546.    if numbought > 1 then do; tr '';Tr numbought' 'virusbought's bought for $'totalcost'.'; end
  547.  
  548.    if ans = 1 then BW = BW + NUMBOUGHT
  549.    if ans = 2 then SCA = SCA + NUMBOUGHT
  550.    if ans = 3 then TROJ = TROJ + NUMBOUGHT
  551.    money = money - totalcost
  552.    bankmoney = bankmoney + totalcost; tr ''
  553.    Query RETURN;call HAA
  554. end
  555.  
  556. if ans = '6' then do
  557.    Tr 'Gambling is a bad habit!  You have a 350% chance of losing!'; tr ''
  558.    Tr '  Gamble how much money (0 to quit)?'
  559.    Query '> ';ANS=upper(result);call NC
  560.    if ANS = 0 | ANS='Q' | ANS='' then call HAA
  561.    if ANS > MONEY then do
  562.        Tr 'Not enough money..'; tr ''
  563.        Query RETURN;call HAA
  564.     end
  565.     RANWIN = RANDOM(1,2,time('s'))
  566.       if RANWIN = 1 then do
  567.          tr ''
  568.          ranmess = random(1,3,time('s'))
  569.          if ranmess = 1 then Tr 'You are a loser!'
  570.          if ranmess = 2 then Tr 'What a waste of money!'
  571.          if ranmess = 3 then Tr 'You would do lousy in Vegas!'
  572.          MONEY = MONEY - ANS
  573.          bankmoney = bankmoney + ans
  574.          tr '';Query RETURN;call HAA
  575.       end
  576.       tr ''
  577.       if ANS <= 1000 then do
  578.          MONEY = MONEY + (ANS * 2)
  579.          bankmoney = bankmoney - ans*2
  580.          Tr 'You won $'ANS*2'  What luck!'
  581.       end
  582.       if ANS > 1000 then do
  583.          Tr 'You won $'ANS*2'! Outstanding!'
  584.          MONEY = MONEY + (ANS * 2)
  585.          bankmoney = bankmoney - ans*2
  586.       end
  587.       Tr ''
  588.       Query RETURN;call HAA
  589.    END
  590.  if ans = '7' then do;call wardial;call haa;end
  591.  if ans = '?' then do
  592.     call HAA
  593.  end
  594.  
  595. FIXDRIVE:
  596. if ans='1' then do;tofixcost = level*5;maxmegs = level * 10
  597. canfix = maxmegs - megs;if megs = maxmegs then do
  598.   Tr 'Your hard drive isn''t damaged.'; tr ''
  599.   Query RETURN;call HAA
  600. end
  601. if MONEY <=0 & savings < 100 then do
  602.   Tr '';Tr '';Tr 'You are out of money!  You are given $100 from the HAA.'
  603.   money = money + 100;bankmoney = bankmoney - 100
  604. end
  605. Tr ''; Tr '';Tr 'You have 'canfix' megabytes of damage.'
  606. Tr 'Repair costs run $'tofixcost' per meg to fix.'
  607. Tr '';Query 'Fix how many? '
  608. tofix = upper(result);call NC
  609. if tofix > maxmegs | tofix > canfix then do
  610.   Tr '';Tr 'You don''t even have that big of a hard drive.'; tr ''
  611.   Query RETURN;call HAA
  612. end
  613. if tofix = '' then call HAA
  614. if tofix = '###PANIC' then call QUICKEXIT
  615. if money < tofixcost*tofix then do
  616.    Tr '';Tr 'Not enough money!'; tr ''
  617.    Query RETURN;call HAA
  618. end
  619. megs = megs + tofix;money = money - tofixcost*tofix
  620. bankmoney = bankmoney + tofixcost*tofix
  621. Tr '';Tr tofix' megs repaired at a total cost of $'tofixcost*tofix'.'; tr ''
  622. QUery RETURN;call HAA
  623. END
  624. call HAA
  625.  
  626. CREDITCARDS:
  627. if thecard > 10 then do;tr '';tr 'You''ve hacked enough cards today.';call haa;end
  628. Tr 'Credit Cards'; Tr 'Hacking credit cards is dangerous but if you succeed you can get a large'
  629. Tr 'sum of money.  There are several different cards which you can hack.'; Tr ''
  630. Tr '[H]ack a card     [L]ist Credit Cards to hack';tr '[Q]uit to HAA'; tr ''
  631. Query '[Cards> '
  632. ans = upper(result)
  633. call NC
  634. if ans = 'Q' | ans='' then call HAA
  635. if ans = 'H' then do
  636.    Tr '';Tr '  Hack which card [1-12; 12 being most difficult]'
  637.    Query '> ';card = upper(result)
  638.    if card <= 0 | card > 12 then do
  639.       Tr '';Tr 'That card does not exist...'
  640.       Query RETURN
  641.       call CREDITCARDS
  642.    end
  643.    call open file, (misc'rxx.cardconvrt'), 'R';do i = 1 to 15;temp=readln(file);interpret temp;end;call close file
  644.    tr '';ss 'Hacking 'CCARD'... Please hold..';thecard=thecard+1
  645.    cchack = random(1,14,time('s'))
  646.    if cchack < CARD then do
  647.       Tr 'You are CAUGHT by the FEDS!'
  648.       ranpen = random(1,5,time('s'))
  649.       if ranpen = 1 | ranpen = 2 then do
  650.          Tr 'You get off easy with a slap on the wrists!'; tr ''
  651.          Query RETURN;call HAA
  652.       end
  653.       if ranpen = 3 then do
  654.          moneylos = maxwin
  655.          if moneylos > money then moneylos = money
  656.          Tr '';Tr 'You are caught by the FEDS! They penalize you $'moneylos'!!'
  657.          money = money - moneylos;bankmoney = bankmoney + moneylos
  658.          tr '';Query RETURN;call HAA
  659.       end
  660.       if ranpen = 4 then do
  661.        if xrp > 30000 then do
  662.          Tr 'The HAA is rather embarassed, they penalize you'
  663.          Tr '30000 experience points'
  664.          xrp = xrp - 30000
  665.          Tr '';Tr 'They formatted your hard drive as well.'; tr ''
  666.          megs = 0;Query RETURN;call HAA
  667.        end
  668.        xrp = 0
  669.        Tr 'The HAA is rather embarassed, you are penalized to level 1.'
  670.        Tr 'Sorry!  It will teach you for the future!'; tr ''
  671.        xrp = 0;megs = 0;Query RETURN;call HAA
  672.       end
  673.       if ranpen = 5 then do
  674.          if money < maxwin then maxwin = money
  675.          Tr 'The FBI catches you and fines you $'MAXWIN' for your crimes.'; tr ''
  676.          money = money - maxwin;bankmoney = bankmoney + maxwin
  677.          Query RETURN;call HAA
  678.       end
  679.    end
  680.    Tr 'You got away with $'maxwin'!'; tr ''
  681.    money = money + maxwin;bankmoney = bankmoney - maxwin
  682.    Query RETURN;call HAA
  683. end
  684.  
  685. if ans = 'L' then do
  686.    showfile misc'sys.CreditCards'
  687.    Query RETURN;call CREDITCARDS
  688. end
  689. call HAA
  690.  
  691. DIAL:
  692.  showfile misc'sys.dialer'
  693.  tr '';Query '[SYS:Terms ('maxturns-maincounter') > '
  694.  ANS = upper(result);call NC
  695.  if ANS = 'TERM' then do;call turns;call DIALOUT;end
  696.  if ANS = 'DIR' then do
  697.     call DIAL
  698.  end
  699.  if ANS = 'ENDCLI' then call BEXIT
  700.  if ANS = 'Q' | ans = 'QUIT' then call BEXIT
  701.  if (Access = 23) & (ANS = 'ADD') then call AddNumbers
  702.  if ANS = 'CD ROOT' | ans = 'ROOT' | ans = 'CD /' then call MAIN
  703.  if ANS = 'NUMBERS' then do
  704.     call NUMBERLIST;call DIAL
  705.  end
  706.  Tr '';Tr 'Unkown command.'; tr ''
  707. call DIAL;call BEXIT
  708.  
  709. DIALOUT:
  710.  if MEGS <= 0 then do
  711.     Tr 'You do not have enough storage to do this.  Contact the'
  712.     Tr 'Hackers Association of America and repair your hard drive.';tr ''
  713.     Query RETURN;call DIAL
  714.  end
  715.  CALLINGFLAG = 0;FOUNDFLAG = 0
  716.  tr '(SYS:Terms/> [CLI 2]'; tr ''; tr '(SYS:Terms/> '
  717.  Tr ''tnm' v 1.0 All Rights Reserved'
  718.  WW=0;HAH=0
  719.  Tr 'Initializing Modem...'; tr ''; tr ''; tr 'AT&C1H0E0X1S2=1M1'; tr '';tr ''
  720.  Query 'ATDT *70,'
  721.  TODIAL = UPPER(RESULT)
  722.  if todial='' then call dial
  723.  if exists(PHONES'LOCAL') then do
  724.     call open file, (PHONES'LOCAL'), 'R'
  725.          telnum = readln(file)
  726.          do i = 1 to telnum
  727.             locnm.i = readln(file);LOCALNUM.i = readln(file)
  728.             locmg.i = readln(file);locwin.i = readln(file)
  729.             loclos.i = readln(file)
  730.             if LOCALNUM.i = TODIAL then do
  731.                fndnum = TODIAL;fndnm = locnm.i;fndmeg = locmg.i
  732.                fndloss = loclos.i;FOUNDWINS = FOUNDWINS.i;FOUNDLOOP = I
  733.                FOUNDFLAG = 1;CALLINGFLAG = 1
  734.             end
  735.          end
  736.     call close file
  737.  
  738.     if foundflag = 0 then do
  739.     call open file, (PHONES'HAA'), 'R'
  740.          telnum = readln(file)
  741.          do i = 1 to telnum
  742.             locnm.i = readln(file);LOCALNUM.i = readln(file)
  743.             locmg.i = readln(file);locwin.i = readln(file)
  744.             loclos.i = readln(file)
  745.             if LOCALNUM.i = TODIAL then do
  746.                fndnum = TODIAL;fndnm = locnm.i;fndmeg = locmg.i
  747.                fndloss = loclos.i;FOUNDWINS = FOUNDWINS.i
  748.                FOUNDLOOP = I;WW=1;HAH=1;FOUNDFLAG = 1;CALLINGFLAG = 5
  749.             end
  750.          end
  751.     call close file
  752.     end
  753.  
  754.     if foundflag = 0 then do
  755.     call open file, (PHONES'WAR'), 'R'
  756.          telnum = readln(file)
  757.          do i = 1 to telnum
  758.             locnm.i = readln(file);LOCALNUM.i = readln(file)
  759.             locmg.i = readln(file);locwin.i = readln(file)
  760.             loclos.i = readln(file)
  761.             if LOCALNUM.i = TODIAL then do
  762.                fndnum = TODIAL;fndnm = locnm.i;fndmeg = locmg.i
  763.                fndloss = loclos.i;FOUNDWINS = FOUNDWINS.i
  764.                FOUNDLOOP = I;WW=1;FOUNDFLAG = 1;CALLINGFLAG = 4
  765.             end
  766.          end
  767.     call close file
  768.     end
  769.  
  770.     if foundflag = 0 then do
  771.     call open file, (PHONES'MAINFRAMES'), 'R'
  772.          telnum = readln(file)
  773.          do i = 1 to telnum
  774.             locnm.i = readln(file);LOCALNUM.i = readln(file)
  775.             locmg.i = readln(file);locwin.i = readln(file)
  776.             loclos.i = readln(file)
  777.             if LOCALNUM.i = TODIAL then do
  778.                fndnum = TODIAL;fndnm = locnm.i;fndmeg = locmg.i
  779.                fndloss = loclos.i;FOUNDWINS = FOUNDWINS.i
  780.                FOUNDLOOP = I;FOUNDFLAG = 1;CALLINGFLAG = 2
  781.             end
  782.          end
  783.     call close file
  784.     end
  785.  
  786.     if foundflag = 0 then do
  787.     call open file, (PHONES'GOV'), 'R'
  788.          telnum = readln(file)
  789.          do i = 1 to telnum
  790.             locnm.i = readln(file);LOCALNUM.i = readln(file);locmg.i = readln(file)
  791.             locwin.i = readln(file);loclos.i = readln(file)
  792.             if LOCALNUM.i = TODIAL then do
  793.                fndnum = TODIAL;fndnm = locnm.i;fndmeg = locmg.i
  794.                fndloss = loclos.i;FOUNDWINS = FOUNDWINS.i
  795.                FOUNDFLAG = 1;CALLINGFLAG = 3;FOUNDLOOP = I
  796.             end
  797.          end
  798.     call close file
  799.     end
  800.     if FOUNDFLAG = 0 then do
  801.        Tr '';Tr 'That number is not listed!  Try typing ''Numbers'' for a listing'
  802.        Tr 'of possible numbers to dial.'; tr '';maincounter=maincounter-1
  803.        Query RETURN;call DIAL
  804.     end
  805.     if fndmeg > 999 then do;tr ''; tr '';tr 'BBS Over 999 Megs! Error..';call dial;end
  806.     if lastfight=fndnm then do;tr '';tr 'You already hacked that BBS.  Try a diferent one.';tr '';call dial;end
  807.     tr '';Query RETURN
  808.     Tr 'Dialing..'
  809.     tr '';tr 'ATDT *70,'fndnum
  810.     OTHERMEGS = fndmeg
  811.     gaga=random(1,10,time(s));if gaga='1' | gaga = '2' then do;tr '';tr 'BUSY';tr '';call dial;end
  812.     if gaga='9' | gaga='10' then do;tr '';tr 'NO CARRIER';tr '';call dial;end
  813.     if ttyp <= 2 then do;Tr 'CONNECT 300'; tr ''; end
  814.     if ttyp >= 3 & ttyp <= 4 then do; Tr 'CONNECT 1200'; tr ''; end
  815.     if ttyp >= 5 & ttyp <= 6 then Tr 'CONNECT 2400'
  816.     if ttyp >= 7 & ttyp <= 8 then Tr 'CONNECT 9600'
  817.     if ttyp >= 9 & ttyp <= 15 then Tr 'CONNECT 19200'
  818.  
  819.   if (CALLINGFLAG = 1) | (Callingflag=4) | (CallingFlag=5) then do
  820.     if exists(misc||fndnm) then do;showfile misc||fndnm;end;else showfile misc'sys.Generic'
  821.   end
  822.  
  823.   if CALLINGFLAG = 2 then do
  824.      Tr 'VAX VMS MAINFRAME V5.12';Tr '';Tr 'Licensed to 'fndnm
  825.      Tr '';Tr 'Local>_'; tr ''; tr '';
  826.   end
  827.  
  828.   if CALLINGFLAG = 3 then do
  829.      Tr fndnm' computer'
  830.      Tr 'This is a Goverment restricted area.  If you are not authorized log off at'
  831.      Tr 'once!  Federal law prohibits any hacking or piracy anywhere!'; tr ''; tr ''
  832.      Tr 'To login, enter information using this format:'
  833.      Tr ' [USERNAME] / [PASSWORD#1] / [PASSWORD#2] / [USERID#]@>'; tr ''; tr ''
  834.   end
  835.  
  836.      Tr '  ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿'
  837.      Tr '  ³       Now is your chance!  Should you hack or run?                \c9³'
  838.      Tr '  ³                                                                   ³'
  839.      Tr '  ³             [H]ack                                                \c9³'
  840.      Tr '  ³             [R]un                                                 \c9³'
  841.      Tr '  ³                                                                   ³'
  842.      Tr '  ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ\n1'
  843.      ss 'Choice? '
  844.      hk;ANS = result
  845.      call NC;if ANS = 'H' then do
  846.         tr 'Hack';call FIGHTINIT
  847.      end
  848.      tr ''; tr '';Tr '+++'; tr ''; tr 'NO CARRIER'; tr ''
  849.      call DIAL
  850.  
  851. FIGHTINIT:
  852.    TFM = left(fndmeg,5);TFN = left(fndnm,20);TYM = left(MEGS,4)
  853.    TBW = left(BW,5);TTR = left(TROJ,5);TSC = left(SCA,5);TMK = left(MK,5)
  854.    tr '';Tr 'You are currently using 'tnm' and use 'DRIVENAME' backup.'; tr ''
  855.    Tr ' His megs: 'TFM'   Name: 'TFN
  856.    Tr 'Your megs: 'tym'';tr '';flag=1
  857.    if TROJ>0 then do;txt=left('[3] Trojans:       'ttr,51);ss txt;flag=flag+1;end
  858.    if SCA>0 then do;txt=left('[4] SCAs:          'TSC,51);if flag=2 then do;tr txt;flag=1;end;else do;ss txt;flag=flag+1;end;end
  859.    if BW>0 then do;txt=left('[5] Byte Warriors: 'tbw,51);if flag=2 then do;tr txt;flag=1;end;else do;ss txt;flag=flag+1;end;end
  860.    if MK>0 then tr left('[6] Memory Killers:'TMK,51)
  861.    tr ''; tr '';Query '   1=Line Noise,  2=Normal Hack, Q=Run  or  enter a Virus number.';tr ''; tr '-> '
  862.    ANS = upper(RESULT)
  863.    if ANS = '?' then do
  864.       call FIGHTINIT
  865.    end
  866.    if ANS = 'Q' | ans = 'D' | ans = '' then call TRYDISC
  867.    if ans = '1' then call HACKEM
  868.    if ans = '2' then call HACKEM
  869.    if ans = '3' then do
  870.       if TROJ <=0 then do
  871.          Tr 'You have no Trojans!';call FIGHTINIT
  872.       end
  873.       TROJUSED = TROJUSED + 1;TROJ = TROJ - 1;call HACKEM
  874.    end
  875.    if ans = '4' then do
  876.       if SCA <= 0 then do
  877.          Tr 'You have no SCA Viruses!';call FIGHTINIT
  878.       end
  879.       SCAUSED = SCAUSED + 1;SCA = SCA - 1
  880.       call HACKEM
  881.    end
  882.    if ans = '5' then do
  883.       if BW <= 0 then do
  884.          Tr 'You have no Byte Warriors!'
  885.          call FIGHTINIT
  886.       end
  887.       BWUSED = BWUSED + 1;BW = BW - 1
  888.       call HACKEM
  889.    end
  890.    if ans = '6' then do
  891.       if MK <= 0 then do
  892.          Tr 'You have no Memory Killers!'
  893.          call FIGHTINIT
  894.       end
  895.       MKUSED = MKUSED + 1;MK = MK - 1
  896.       call HACKEM
  897.    end
  898.  
  899.  
  900.    if ans = '9' then do
  901.       if xrp > 3000000 then do
  902.        Tr 'President of the HAA automatic termination.....'
  903.        Tr 'That computer is totally destroyed, 'ALIAS'!'
  904.        winflag = 0;fndmeg = 0;call WRITEBBS
  905.       end
  906.       Tr 'Security breach!'
  907.    end
  908.  
  909.    call TRYDISC
  910.  
  911.  
  912. HACKEM:
  913.    tr;call rndc
  914.    if ANS = 1 then ss '&^#@G!$KG*&%!@#($&^Yµ¡¤þ¾¼þ«·¾½¼¢tiyuTIYT^*!%#@$  '
  915.    if ANS = 2 then ss 'You try to hack at his computer..'
  916.    if ANS = 3 then ss 'You try to upload a Trojan..'
  917.    if ANS = 4 then ss 'You try to upload an SCA..'
  918.    if ANS = 5 then ss 'You try to upload a Byte Warrior..'
  919.    if ANS = 6 then ss 'You try to upload a Memory Killer..'
  920.    call rndc
  921.    if ANS = 1 then THRAN = random(1,2,time('s'))
  922.    if ANS = 2 then THRAN = random(1,3,time('s'))
  923.    if ANS = 3 then THRAN = random(1,ttyp,time('s'))
  924.    if ANS = 4 then THRAN = random(1,ttyp,time('s'))
  925.    if ANS = 5 then THRAN = random(1,ttyp,time('s'))
  926.    if ANS = 6 then THRAN = random(1,ttyp,time('s'))
  927.  
  928.    if THRAN <= ttyp then do
  929.       call RANDOMHITMESS
  930.       if ANS = 1 then THdam = random(1,10,time('s'))
  931.       if ANS = 2 then THdam = random(1,15,time('s'))
  932.       if ANS = 3 then do
  933.          THdam = random(1,100,time('s'))
  934.          Tr 'The Trojan succeeds!'
  935.       end
  936.       if ANS = 4 then do
  937.          THdam = random(1,75,time('s'))
  938.          Tr 'The SCA messes him up!'
  939.       end
  940.       if ANS = 5 then do
  941.          THdam = random(1,50,time('s'))
  942.          Tr 'Byte Warrior city on his end!'
  943.       end
  944.       if ANS = 6 then do
  945.          THdam = random(100,200,time('s'))
  946.          Tr 'The memory killer plasters his drive!'
  947.       end
  948.  
  949.       if THDAM > fndmeg then THDAM = fndmeg
  950.       Tr thdam' megs of his drive are jelly!'
  951.       fndmeg = fndmeg - THdam
  952.       if fndmeg <= 0 then do
  953.          winflag = 0
  954.          call WRITEBBS
  955.       end
  956.       totmgcr = totmgcr + THDAM
  957.       tr ''
  958.    end
  959.  
  960.    if THRAN > ttyp then do
  961.       if ANS = 1 | ANS = 2 then Tr 'You fail!'
  962.       if ANS = 3 then do
  963.       Tr 'The Trojan fails!'
  964.       end
  965.       if ANS = 4 then do
  966.       Tr 'The SCA fails!'
  967.       end
  968.       if ANS = 5 then do
  969.       Tr 'The Byte Warrior does not succeed!'
  970.       end
  971.       if ANS = 6 then do
  972.       Tr 'The Memory Killer does not work!'
  973.       end
  974.    end
  975. tr;call HISTURN
  976. call rndc;call HISCOMBAT
  977.  
  978. HISCOMBAT:
  979. if HEHIT = 0 then do
  980.    Tr 'He doesnt do anything!'
  981.    call FIGHTINIT
  982. end
  983. hisdam = random(1,fndmeg,time('s'))
  984. if hisdam > megs then hisdam = megs
  985. Tr 'He trashes 'hisdam' megs on your computer!'
  986. megs = megs - hisdam;megslost = megslost + hisdam
  987. if megs <= 0 then do
  988.    winflag = 1;call WRITEBBS
  989. end
  990. call FIGHTINIT
  991.  
  992.  
  993. TRYDISC:
  994. Tr '';Tr 'You try to disconnect...'; tr ''
  995. HIT = random(1,2,time('s'))
  996. if HIT = 1 then do
  997.    Tr '+++'; tr ''; tr 'NO CARRIER'
  998.    call DIAL
  999. end
  1000. tr 'You fail!'; tr ''
  1001. DAM = random(1,fndmeg,time('s'))
  1002. oldmegs = megs
  1003. megs = megs - dam
  1004. if megs < 0 then megs = 0
  1005. if megs = 0 then do
  1006.    Tr 'You are trashed TOTALLY!'; tr ''
  1007.    megslost = megslost + oldmegs
  1008. end
  1009. if megs > 0 then do
  1010.    Tr 'He did 'DAM' megs of damage!'; tr ''
  1011.    megslost = megslost + dam
  1012. end
  1013. Query RETURN;totalloss = totalloss + 1
  1014. WINFLAG = 1;call WRITEBBS
  1015.  
  1016.  
  1017. WRITEBBS:
  1018. LASTFIGHT = fndnm
  1019. if winflag = 0 then do
  1020.    extrabonus = random(1,3,time('s'))
  1021.    if extrabonus = 1 then do
  1022.       exbtype = random(1,50,time('s'))
  1023.       exbon = exbtype * 1000
  1024.       Tr 'You get a special extra bonus of $'ExBon'!'
  1025.       money = money + exbon
  1026.       bankmoney = bankmoney - exbon
  1027.    end
  1028.    moneyfound = random(1,othermegs,time('s'))
  1029.    if othermegs > 500 then moneyfound = moneyfound * 2
  1030.    findvir = random(1,2,time('s'))
  1031.    vir = 'no';numvir = ''
  1032.    if findvir = 1 | findvir = 2 then do
  1033.       numvir = random(1,5,time('s'))
  1034.       virtyp = random(1,4,time('s'))
  1035.       if virtyp = 1 then do
  1036.          bw = bw + numvir;vir = 'Byte Warrior'
  1037.       end
  1038.       if virtyp = 2 then do
  1039.          troj = troj + numvir;vir = 'Trojan'
  1040.       end
  1041.       if virtyp = 3 then do
  1042.          sca = sca + numvir;vir = 'SCA'
  1043.       end
  1044.       if virtyp = 4  then do
  1045.          numvir = 1;mk = mk + 1;vir = 'Memory Killer'
  1046.       end
  1047.    end
  1048.    TOTALwins = TOTALwins + 1
  1049.    if WW=1 then xbns = othermegs*200
  1050.    else xbns = othermegs*100
  1051.    xrp = xrp + xbns
  1052.    money = money + moneyfound;bankmoney = bankmoney - moneyfound
  1053.    Tr '';Tr 'The HAA rewards you with 'xbns' experience points and a cash'
  1054.    Tr 'bonus of $'moneyfound'.'
  1055.    Tr '';Tr 'You also find 'numvir' 'vir' virus(s).'
  1056. end
  1057. if winflag = 1 then do
  1058.    TOTALLOSS = TOTALLOSS + 1;tr '';tr 'You lost!'
  1059. end
  1060. tr '';Query RETURN
  1061.  
  1062. if CALLINGFLAG = 1 then call open file, (PHONES'LOCAL'), 'R'
  1063. if CALLINGFLAG = 2 then call open file, (PHONES'MAINFRAMES'), 'R'
  1064. if CALLINGFLAG = 3 then call open file, (PHONES'GOV'), 'R'
  1065. if CALLINGFLAG = 4 then call open file, (PHONES'WAR'), 'R'
  1066. if CALLINGFLAG = 5 then call open file, (PHONES'HAA'), 'R'
  1067.       telnum = readln(file)
  1068.       do i = 1 to telnum
  1069.          locnm.i = readln(file);LOCALNUM.i = readln(file)
  1070.          locmg.i = readln(file);locwin.i = readln(file)
  1071.          loclos.i = readln(file)
  1072.       end
  1073. call close file
  1074. locnm.FOUNDLOOP = fndnm;LOCALNUM.FOUNDLOOP = fndnum
  1075. locmg.FOUNDLOOP = OTHERMEGS
  1076. if WINFLAG = 1 then locwin.FOUNDLOOP = locwin.FOUNDLOOP + 1
  1077. if WINFLAG = 0 then loclos.FOUNDLOOP = loclos.FOUNDLOOP + 1
  1078. if CALLINGFLAG = 1 then call open file, (PHONES'LOCAL'), 'R'
  1079. if CALLINGFLAG = 2 then call open file, (PHONES'MAINFRAMES'), 'R'
  1080. if CALLINGFLAG = 3 then call open file, (PHONES'GOV'), 'R'
  1081. if CALLINGFLAG = 4 then call open file, (PHONES'WAR'), 'R'
  1082. if CALLINGFLAG = 5 then call open file, (PHONES'HAA'), 'R'
  1083.      call writeln file, TELNUM
  1084.      do i = 1 to telnum
  1085.         call writeln file, locnm.i;call writeln file, LOCALNUM.i
  1086.         call writeln file, locmg.i;call writeln file, locwin.i
  1087.         call writeln file, loclos.i
  1088.      end
  1089. call close file
  1090. if WINFLAG=0 and HAH=1 then call wingame
  1091. call DIAL
  1092.  
  1093. HISTURN:
  1094. if OTHERMEGS < 50 then do
  1095.    HHRAN = random(1,5,time('s'))
  1096. end
  1097. if OTHERMEGS < 100 then do
  1098.    HHRAN = random(1,4,time('s'))
  1099. end
  1100. if OTHERMEGS < 150 then do
  1101.    HHRAN = random(1,3,time('s'))
  1102. end
  1103. if OTHERMEGS < 500 then do
  1104.    HHRAN = random(1,2,time('s'))
  1105. end
  1106. if OTHERMEGS < 1000 then do
  1107.    HHRAN = random(1,1,time('s'))
  1108. end
  1109. if hhran = 1 then HEHIT = 1
  1110. if hhran > 1 then HEHIT = 0
  1111. RETURN
  1112.  
  1113. RANDOMHITMESS:
  1114. RANMESS = random(1,5,time('s'))
  1115.   if RANMESS = 1 then do
  1116.      Tr 'You got him!'
  1117.   end
  1118.   if RANMESS = 2 then do
  1119.      Tr 'You nailed him!'
  1120.   end
  1121.   if RANMESS = 3 then do
  1122.      Tr 'You fried him!'
  1123.   end
  1124.   if RANMESS = 4 then do
  1125.      Tr 'He is french toast on that round!'
  1126.   end
  1127.   if RANMESS = 5 then do
  1128.      Tr 'You can smell burnt chips thru the telephone lines!'
  1129.   end
  1130. RETURN
  1131.  
  1132. NUMBERLIST:
  1133. Tr 'bisting of:'; tr ''
  1134. Tr 'A. Local Boards              Easy'; tr ''; tr 'B. Mainframes                Moderate';tr ''; tr 'C. Government Computers Hard'; Tr ''
  1135. ss '?] '
  1136. hk;ANS = RESULT;call nc
  1137. if ANS='A' | ans='' then do
  1138.    tr 'Local'
  1139.    if ~exists(phones'LOCAL') then do
  1140.       Tr 'There is not a local telephone book. Tell the SysOp!'; tr ''
  1141.       Query RETURN
  1142.       call DIAL
  1143.    end
  1144.    call open file, (PHONES'LOCAL'), 'R'
  1145.         telnum = readln(file)
  1146.         do i = 1 to telnum
  1147.            locnm.i = readln(file);LOCALNUM.i = readln(file);locmg.i = readln(file)
  1148.            locwin.i = readln(file);loclos.i = readln(FILE)
  1149.         end
  1150.    call close file
  1151.    Tr ' Megs      Number         WINS      LOSS      BBS Name '
  1152.    Tr ' ----      ------         ----      ----      --------'
  1153.    phonecount = 0
  1154.    do i = 1 to telnum
  1155.       phonecount = phonecount + 1
  1156.       lnum = left(LOCALNUM.i,15);lmeg = left(locmg.i,10)
  1157.       lnam = left(locnm.i,25);lwin = left(locwin.i,10)
  1158.       lloss = left(loclos.i,10)
  1159.       tr ' 'lmeg''lnum''lwin''lloss''lnam
  1160.       if phonecount > 20 then do
  1161.          Query RETURN;phonecount = 0
  1162.          tr CLS
  1163.       end
  1164.    end
  1165.    Tr '';Tr 'End of Local BBS List.'; tr ''
  1166.    Query RETURN;call DIAL
  1167. END
  1168.  
  1169.  if ANS = 'B' then do
  1170.     tr 'Mainframes'
  1171.     if ~exists(phones'MAINFRAMES') then do
  1172.        Tr 'There is not a Mainframe telephone book. Tell the SysOp!'; tr ''
  1173.        Query RETURN;call DIAL
  1174.     end
  1175.     call open file, (PHONES'MAINFRAMES'), 'R'
  1176.          telnum = readln(file)
  1177.          do i = 1 to telnum
  1178.             MAINFNAME.i = readln(file);MAINFNUM.i = readln(file)
  1179.             MAINFMEGS.i = readln(file);MAINFWINS.i = readln(file)
  1180.             MAINFLOSS.i = readln(FILE)
  1181.          end
  1182.     call close file
  1183.     Tr 'Megs      Number         WINS      LOSS      Mainframe'
  1184.     Tr '----      ------         ----      ----      ---------'
  1185.     phonecount = 0
  1186.     do i = 1 to telnum
  1187.        phonecount = phonecount + 1
  1188.        mnum = left(MAINFNUM.i,15);mmeg = left(MAINFMEGS.i,10)
  1189.        mnam = left(MAINFNAME.i,25);mwin = left(MAINFWINS.i,10)
  1190.        mloss = left(MAINFLOSS.i,10)
  1191.        tr mmeg''mnum''mwin''mloss''mnam
  1192.        if phonecount > 20 then do
  1193.           Query RETURN;phonecount = 0
  1194.           tr CLS
  1195.        end
  1196.     end
  1197.     tr '';Tr 'End of MainFrame List.'; tr ''
  1198.     Query RETURN;call DIAL
  1199.  END
  1200.  
  1201.  if ANS = 'C' then do
  1202.     tr 'Government'
  1203.     if ~exists(phones'GOV') then do
  1204.        Tr 'There is not a Goverment telephone book. Tell the SysOp!'; tr ''
  1205.        Query RETURN;call DIAL
  1206.     end
  1207.     call open file, (PHONES'GOV'), 'R'
  1208.          telnum = readln(file)
  1209.          do i = 1 to telnum
  1210.             GOVNAME.i = readln(file);GOVNUM.i = readln(file)
  1211.             GOVMEGS.i = readln(file);GOVWINS.i = readln(file)
  1212.             GOVLOSS.i = readln(FILE)
  1213.          end
  1214.     call close file
  1215.     Tr 'Megs      Number         WINS      LOSS      Government Computer'
  1216.     Tr '----      ------         ----      ----      -------------------'
  1217.     phonecount = 0
  1218.     do i = 1 to telnum
  1219.        phonecount = phonecount + 1
  1220.        gnum = left(GOVNUM.i,15);gmeg = left(GOVMEGS.i,10)
  1221.        gnam = left(GOVNAME.i,25);gwin = left(GOVWINS.i,10)
  1222.        gloss = left(GOVLOSS.i,10)
  1223.        Tr gmeg''gnum''gwin''gloss''gnam
  1224.        if phonecount > 20 then do
  1225.           Query RETURN;phonecount = 0;Tr CLS
  1226.        end
  1227.     end
  1228.     Tr '';Tr 'End of Goverment  List.'; tr ''
  1229.     Query RETURN;call DIAL
  1230.  END
  1231. Tr 'What?'
  1232. RETURN
  1233.  
  1234.  
  1235. CONVERSION:
  1236. call open file, (misc'rxx.levconvert'), 'R';boom=0;do until boom=1
  1237. temp=readln(file);interpret temp;end;call close file
  1238. RETURN
  1239.  
  1240. OCONVERSION:
  1241. call open file, (misc'rxx.oconvert'), 'R';boom=0;do until boom=1
  1242. temp=readln(file);interpret temp;end;call close file
  1243. RETURN
  1244.  
  1245. OCONVERSION2:
  1246. call open file, (misc'rxx.oconvert2'), 'R';boom=0;do until boom=1
  1247. temp=readln(file);interpret temp;end;call close file
  1248. RETURN
  1249.  
  1250. MENU:
  1251. call open file, (misc'rxx.maindir'), 'R';boom=0;do until boom=1;fart=readln(file)
  1252. interpret fart;end;call close file;return
  1253.  
  1254. SENDMESS:
  1255. Tr 'Send a user a message:'; tr ''
  1256. txt='Send a message to';call listusers;if toget='###' then call main
  1257. Tr 'Please enter up to 3 lines of transmissions:'
  1258. Tr 'Hit RETURN(s) when your are done sending your message.'; tr ''
  1259. Tr 'This is your margin:'; tr ''
  1260. Tr ':----:----:----:----:----:----:----:----:----:----:----:----:----:----:----:'
  1261. do i = 1 to 3
  1262.    call rndc
  1263.    Query '';ans=result
  1264.    line.i=left(ans,77)
  1265. end
  1266. tr '';ss 'Send the above message? (y/N)? '
  1267. hk;ans = result;call nc
  1268. if ans ~= 'N' then ss 'Yes';else do;tr 'No.';call MAIN;end
  1269. call mailmessage;Tr 'Sent.';call MAIN
  1270.  
  1271. USERLIST:
  1272. Tr ' Users currently playing Hacker:'; tr ''
  1273. call open file, (play'ALIASES'), 'R'
  1274. do i = 1 to TOTALUSERS
  1275.    tempa = readln(file);tempb = readln(file);temp=i'.'
  1276.    if access ~=23 then lala='';else lala='('tempb')'
  1277.    tr ''left(temp,3)' 'tempa'  'lala
  1278. end
  1279. call close file
  1280. tr '';Query RETURN
  1281. bg=1;call top
  1282. RETURN
  1283.  
  1284. YOURSTATS:
  1285. TEX = left(xrp,20);TMO = left(MONEY,10);TDT = left(drty,10)
  1286. TTT = left(ttyp,10);TST = left(MEGS,10);TSC = left(SCA,10)
  1287. TBW = left(BW,10);TTR = left(TROJ,10);UTR = left(TROJUSED,10)
  1288. UBW = left(BWUSED,10);USC = left(SCAUSED,10);UMK = left(MKUSED,10)
  1289. TMK = left(MK,10);TLN = left(LEVNAME,25);tlv = left(LEVEL,10)
  1290. tr '';Tr 'Stats for 'name',    Alias "'alias'":'; tr ''
  1291. Tr '    Money: $'TMO'   Experience: 'TEX
  1292. Tr '    Level: 'tlv'    Level Name: 'TLN
  1293. Tr 'Drivetype: 'TDT'      Terminal: 'TTT
  1294. Tr '  Storage: 'TST'MB Lost/Crashed: 'megslost'/'totmgcr
  1295. Tr '';Tr '    Virus Statistics:'; tr ''
  1296. Tr '           SCAs: 'TSC'   Used: 'USC
  1297. Tr '  Byte Warriors: 'TBW'   Used: 'UBW
  1298. Tr '        Trojans: 'TTR'   Used: 'UTR
  1299. Tr 'Memory  Killers: 'TMK'   Used: 'UMK
  1300. tr '';Query RETURN
  1301. LFI = left(LASTFIGHT,20);TPL = left(TOTALPLAYS,20);TWI = left(TOTALWINS,20)
  1302. TLO = left(TOTALLOSS,20)
  1303. Tr '   WIN/LOSS/PLAY Statistics:'; tr ''
  1304. Tr '       Last Fight: 'LFI
  1305. Tr '        Last Play: 'DATE
  1306. Tr '      Total Plays: 'TPL
  1307. Tr '       Total Wins: 'TWI
  1308. Tr '     Total Losses: 'TLO ; tr ''
  1309. QUery RETURN
  1310. RETURN
  1311.  
  1312.  
  1313. RndC: /* Random Color Generator */
  1314. color = random(1,7,time('s'));
  1315. RETURN
  1316.  
  1317. SPY:
  1318. Tr 'Spy on another user:'; tr '';txt='Spy on';call listusers
  1319. call NC;if toget='###' then call main;call open file, (play''toget), 'R'
  1320. call readostats;call close file
  1321. call OCONVERSION2
  1322. tr '';Tr 'It will cost you $'OLEVEL*100' to spy on that person.'
  1323. costtospy = OLEVEL *100
  1324. if money < costtospy then do
  1325.    tr '';Tr 'You do not have enough money!'; tr ''
  1326.    Query RETURN;call MAIN
  1327. end
  1328. ss 'Spy on him? (y/N) ';hk;SPYANS = result
  1329. call NC;if spyans ~= 'Y' then call main
  1330. OTEX = left(oxper,20);OTMO = left(OMONEY,10);OTDT = left(odrtyp,10)
  1331. OTST = left(OMEGS,10);OTML = left(omlst,10);OTSC = left(OSCA,10);OTBW = left(OBW,10)
  1332. OUBW = left(OBWUSED,10);OUSC = left(OSCAUSED,10);OTMK = left(OMK,10)
  1333. Otlv = left(OLEVEL,10)
  1334. Tr 'Stats for 'Oalias':'; tr ''
  1335. Tr '    Money: $'OTMO'   Experience: 'Oxper
  1336. Tr '    Level: 'Otlv'    Level Name: 'Olevname
  1337. Tr 'Drivetype: 'OTDT'      Terminal: 'Ottyp
  1338. Tr '  Storage: 'OTST'     Megs lost: 'OTML' Megs Crashed: 'Otmcr
  1339. Tr '     SCAs: 'OTSC' Byte Warriors: 'OTBW'      Trojans: 'otroj
  1340. Tr 'SCAs used: 'OUSC'      BWs Used: 'OUBW' Trojans Used: 'otrojused
  1341. Tr ' Mem Kill: 'OTMK'      MKs Used: 'Omkused; tr ''
  1342. Tr '  Win/Loss/Play Statistics:'; tr ''
  1343. Tr '  Last Fight: 'OLfght
  1344. Tr '   Last Play: 'Odate
  1345. Tr ' Total Plays: 'Otpl
  1346. Tr '  Total Wins: 'Otwin
  1347. Tr 'Total Losses: 'OTloss; tr ''
  1348. tr '';Query RETURN
  1349. money = money - olevel*200
  1350. stor=alias;alias='Hacker v4.5';line.1=stor' Spied on you!';line.2='';line.3=''
  1351. call mailmessage;alias=stor;call MAIN
  1352.  
  1353. TOP:
  1354. if bg = 1 then Tr 'Sorting players...'
  1355. call open file, (play'REALNAMES'), 'R'
  1356.      do i = 1 to TOTALUSERS
  1357.         REALname.i = readln(file)
  1358.      end
  1359. call close file
  1360.  
  1361. do i = 1 to totalusers
  1362.    call open file, (play''REALNAME.i), 'R'
  1363.    OALIAS.i = readln(file);OMONEY.i = readln(file)
  1364.    OMEGS.i = readln(file);OSCA.i = readln(file)
  1365.    OBW.i = readln(file);OTROJ.i = readln(file)
  1366.    odrtyp.i = readln(file);ottyp.i = readln(file)
  1367.    oxper.i = readln(file);olfght.i = readln(file)
  1368.    ODATE.i = readln(file);otpl.i = readln(file)
  1369.    otmcr.i = readln(file);otwin.i = readln(file)
  1370.    otloss.i = readln(file);omlst.i = readln(file)
  1371.    OBWUSED.i = readln(file);OTROJUSED.i = readln(file)
  1372.    OSCAUSED.i = readln(file);OMKUSED.i = readln(file)
  1373.    OMK.i = readln(file);call close file
  1374. END
  1375.  
  1376. n = totalusers-1;o = totalusers-1
  1377. do i = 1 to n
  1378.    do j = 1 to o
  1379.       q = j + 1
  1380.       if oxper.q > oxper.j then do
  1381.          temp = oxper.j;tempname = OALIAS.j
  1382.          oxper.j = oxper.q;OALIAS.j = OALIAS.q;oxper.q = temp;OALIAS.q = tempname
  1383.       end
  1384.    end
  1385. end
  1386. call open nfile, (play''Top15), 'W'
  1387. call writeln nfile,' Top 15 Hackers:'
  1388. call writeln nfile,''
  1389. call writeln nfile,'  #   Alias                    Experience     Level'
  1390. toloop = 15
  1391. if totalusers < toloop then toloop = totalusers
  1392. DO I = 1 to toloop
  1393.    call OCONVERSION;OALIAS = left(OALIAS.i,25)
  1394.    OEXP = left(oxper.i,15);OLEVNAME = left(OLEVNAME,30);temp=i'.'
  1395.    call writeln nfile,'  'left(temp,3)' 'OALIAS''OEXP''OLEVNAME
  1396. end
  1397. call close nfile
  1398. if bg = 1 then do; showfile play''top15
  1399. tr '';Query RETURN;end
  1400. bg = 0
  1401. return
  1402.  
  1403. BANK:
  1404. pmo = left(money,23);psa = left(savings,22);bmo = left(bankmoney,20)
  1405. Tr '  ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿'
  1406. Tr '  ³    Pocket Money            Savings Account        Bank Money           ³'
  1407. Tr '  ³    $'pmo'$'psa'$'bmo'³'
  1408. Tr '  ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ'
  1409. showfile misc'sys.bank'
  1410. ss '-> ';hk;ans=result;if ans='#' then call quickexit
  1411. if ans = 'E' then do;tr 'Exit';call MAIN;end
  1412. if ans = 'D' then do
  1413.    if money <=0 then do
  1414.       tr 'Deposit'; tr '';Tr 'You are holding no money!'; tr ''
  1415.       QUery RETURN
  1416.       call MAIN
  1417.    end
  1418. tr 'Deposit.'; tr ''
  1419. Query 'Deposit how much (Q=Quit)?   $'
  1420. ans = result;call NC
  1421. if ans > money then do
  1422.    tr '';Tr 'You do not have that much!';tr '';Query RETURN;call MAIN
  1423. end
  1424. if ans = '' then call MAIN
  1425. money = money - ans;savings = savings + ans
  1426. call open file, (BNK''NAME), 'W';call writeln file, SAVINGS;call close file
  1427. tr '';Tr '$'ANS' deposited.  You now have $'SAVINGS' in your savings account, and $'money
  1428. tr 'in your pocket.';tr '';Query RETURN;call MAIN
  1429. end
  1430.  
  1431. if ans = 'W' then do
  1432. if ~exists(BNK''NAME) then do
  1433. Tr 'Withdraw.'; tr ''; tr ''; tr 'You have no Savings Account.'; tr ''
  1434. Query RETURN;call MAIN;end
  1435. tr 'Withdraw'; tr ''; tr ''
  1436. Query 'Withdraw how much (Q=Quit)?   $'
  1437. ANS = result;call NC
  1438. if ans = '' | ans = 'Q' | ans = 'q' then call MAIN;if ans > savings then do
  1439. tr '';Tr 'Not enough in account.'; tr ''; Query RETURN;call MAIN;end
  1440. money = money + ans;savings = savings - ans
  1441. call open file, (BNK''NAME), 'W';call writeln file, SAVINGS;call close file
  1442. Tr '$'ans' withdrawn.  You now have $'money'.'; tr ''
  1443. Query RETURN;call MAIN;end;call MAIN;end
  1444.  
  1445. NC:
  1446. GETCARRIER;carrier = result;if carrier=='FALSE' then call bexit
  1447. if maincounter >= MAXTURNS then do
  1448. tr '';Tr 'You are out of turns for this call.  Try tomorrow.'; tr ''
  1449. Query RETURN;call BEXIT;end
  1450. if storage() < minbyte then do;tr '';tr 'Memory running low! Exiting game..'
  1451. logentry 'Hacker 4.5 ran low on memory!';call bexit2;end;return
  1452.  
  1453. BEXIT:
  1454. tr 'Process 4 ending'; tr ''; tr 'endcli'; tr ''; tr ''; tr 'Saving your stats..'
  1455. call top
  1456. BEXIT2:
  1457. call open file, (BNK'MONBANK'), 'W';call writeln file, BANKMONEY;call close file
  1458. TOTALPLAYS = TOTALPLAYS + 1
  1459. logentry name' played Hacker v4.5'
  1460. call open file, (play''NAME), 'W'
  1461. call savestats;call close file;bufferflush
  1462. tr ''; tr '';tr 'Hacker v4.0 - Originaly by Patrick Baker, modified by The Brazilian'
  1463. tr 'Hacker v4.5 - Modified by Diamond Back for the FLIPSIDE (305)596-6711'
  1464. shutdown
  1465. exit
  1466.  
  1467.  
  1468. TERMCOST:    /* Used to determine how much terminals cost */
  1469. if ans = 2 then cost = 1000;if ans = 3 then cost = 10000
  1470. if ans = 4 then cost = 50000;if ans = 5 then cost = 100000
  1471. if ans = 6 then cost = 200000;if ans = 7 then cost = 500000
  1472. if ans = 8 then cost = 1000000;if ans = 9 then cost = 200000
  1473. return
  1474.  
  1475. HARDCOST:    /* Used to determine how much hardware costs */
  1476. if ans = 2 then cost = 1000;if ans = 3 then cost = 10000
  1477. if ans = 4 then cost = 50000;if ans = 5 then cost = 100000
  1478. if ans = 6 then cost = 150000;if ans = 7 then cost = 200000
  1479. return
  1480.  
  1481. READSTATS:
  1482. ALIAS = readln(file);MONEY = readln(file);MEGS = readln(file)
  1483. SCA = readln(file);BW = readln(file);TROJ = readln(file);drty = readln(file)
  1484. ttyp = readln(file);xrp = readln(file);LASTFIGHT = readln(file);DATE = readln(file)
  1485. TOTALPLAYS = readln(file);totmgcr = readln(file);TOTALWINS = readln(file)
  1486. TOTALLOSS = readln(file);MEGSLOST = readln(file);BWUSED = readln(file)
  1487. TROJUSED = readln(file);SCAUSED = readln(file);MKUSED = readln(file)
  1488. MK = readln(file);LASTDPLAYED = readln(file);MAINCOUNTER = readln(file)
  1489. WD = readln(file)
  1490. return
  1491.  
  1492. SAVESTATS:
  1493. call writeln file,ALIAS;call writeln file,MONEY
  1494. call writeln file,MEGS;call writeln file,SCA;call writeln file,BW
  1495. call writeln file,TROJ;call writeln file,drty;call writeln file,ttyp
  1496. call writeln file,xrp;call writeln file,LASTFIGHT;call writeln file,NEWDATE
  1497. call writeln file,TOTALPLAYS;call writeln file,totmgcr;call writeln file,TOTALWINS
  1498. call writeln file,TOTALLOSS;call writeln file,MEGSLOST;call writeln file,BWUSED
  1499. call writeln file,TROJUSED;call writeln file,SCAUSED;call writeln file,MKUSED
  1500. call writeln file,MK; call writeln file,DATEONLY; call writeln file,MAINCOUNTER
  1501. call writeln file,WD
  1502. return
  1503.  
  1504. SAVEOSTATS:
  1505. call writeln file, OALIAS;call writeln file, OMONEY;call writeln file, OMEGS
  1506. call writeln file, OSCA;call writeln file, OBW;call writeln file, OTROJ
  1507. call writeln file, odrtyp;call writeln file, ottyp;call writeln file, oxper
  1508. call writeln file, olfght;call writeln file, ODATE;call writeln file, otpl
  1509. call writeln file, otmcr;call writeln file, otwin;call writeln file, otloss
  1510. call writeln file, omlst;call writeln file, OBWUSED;call writeln file, OTROJUSED
  1511. call writeln file, OSCAUSED;call writeln file, OMKUSED;call writeln file, OMK
  1512. call writeln file, OLASTDPLAYED; call writeln file, OMAINCOUNTER;
  1513. call writeln file, OWD
  1514. return
  1515.  
  1516. READOSTATS:
  1517. OALIAS = readln(file);OMONEY = readln(file);OMEGS = readln(file)
  1518. OSCA = readln(file);OBW = readln(file);OTROJ = readln(file)
  1519. odrtyp = readln(file);ottyp = readln(file);oxper = readln(file)
  1520. olfght = readln(file);ODATE = readln(file);otpl = readln(file)
  1521. otmcr = readln(file);otwin = readln(file);otloss = readln(file)
  1522. omlst = readln(file);OBWUSED = readln(file);OTROJUSED = readln(file)
  1523. OSCAUSED = readln(file);OMKUSED = readln(file);OMK = readln(file)
  1524. OLASTDPLAYED = readln(file); OMAINCOUNTER = readln(file)
  1525. OWD = readln(file)
  1526. return
  1527.  
  1528. MAILMESSAGE:
  1529. if ~exists(mess''toget) then do;call open file, (mess''toget), 'W'
  1530. call writeln file, '0';call close file;end
  1531. call open file, (MESS''toget), 'R'
  1532. newflag = readln(file)
  1533. do i = 1 to newflag;do x = 1 to 4;dat.i.x=readln(file);end;end;call close file
  1534. call open file, (mess''toget), 'W'
  1535. newflag=newflag+1;call writeln file, newflag
  1536. do i = 1 to newflag-1;do x = 1 to 4;call writeln file, dat.i.x;end;end
  1537. call writeln file, alias
  1538. do i = 1 to 3;call writeln file, line.i;end;call close file
  1539. return
  1540.  
  1541. TOPTENSAVE:
  1542. if ~exists(play'last10') then do;call open file, (play'last10'),'W'
  1543. do i = 1 to 10;call writeln file, ' ---- ';end;call close file;end
  1544. call open file, (play'last10'), 'R';do i = 1 to 10;temp.i=readln(file);end
  1545. call close file;call open file, (play'last10'), 'W';call writeln file, txt
  1546. do i = 1 to 9;call writeln file, temp.i;end;call close file;return
  1547.  
  1548. LISTUSERS:
  1549. call open file, (play'Aliases'), 'R';flag=0;do i=1 to totalusers
  1550. tempa.i=readln(file);tempb.i=readln(file);flag=flag+1
  1551. if flag=2 then do;tr left(i,2)'. 'tempa.i;flag=0;end
  1552. else ss left(i,2)'. 'left(tempa.i,35);end
  1553. if flag=1 then tr;call close file
  1554. tr '';ss txt' whom? (Q=Quit) : '
  1555. bufferflush;if totalusers >= 10 then do;hk;ja=result;ss ja
  1556. hk;jaja=result
  1557. if c2d(jaja)=13 then ans=ja;else ans=ja||jaja;end;else do;hk;ans=result;end
  1558. if ans='Q' then do;tr 'Aborted.';toget='###';return;end
  1559. if tempa.ans=alias then do;tr 'Thats you!';toget='###';return;end
  1560. if ans > totalusers | ans <= 0 then do;tr 'Invalid user.';toget='###';return;end
  1561. tr tempa.ans;toget=tempb.ans;return
  1562.  
  1563.  
  1564. QUICKEXIT:
  1565. bufferflush
  1566. shutdown
  1567. exit
  1568.  
  1569. ERROR:
  1570. tr '';tr 'An error has occured in the game.. Exiting..'
  1571. logentry 'Error in Hacker, line 'sigl'.. Please contact'
  1572. logentry 'ByteMaster at (318)793-4101, data.'
  1573. shutdown
  1574. exit
  1575.  
  1576. SYNTAX:
  1577. tr '';tr 'An error has occured in the game.. Exiting..'
  1578. logentry 'Syntax error in Hacker, line 'sigl'.. Please contact'
  1579. logentry 'ByteMaster at (318)793-4101, data.'
  1580. shutdown
  1581. exit
  1582.  
  1583. IOERR:
  1584. tr '';tr 'An error has occured in the game.. Exiting..'
  1585. logentry 'I/O Error in Hacker, line 'sigl'.. Please contact'
  1586. logentry 'ByteMaster at (318)793-4101, data.'
  1587. shutdown
  1588. exit
  1589.  
  1590. HALT:
  1591. tr '';tr 'ARexx HALT issued by the sysop - Shutting down..'
  1592. call bexit2
  1593.  
  1594. TURNS:
  1595.   MAINCOUNTER=MAINCOUNTER+1
  1596.   If MAINCOUNTER > MAXTURNS then do
  1597.     tr '';Tr "You're out of turns for today!'; tr 'Try again tommorow!'; tr ''
  1598.     Query RETURN
  1599.     call BEXIT
  1600.   end
  1601. return
  1602. GETDATE:
  1603.   DateOnly=right(DATE,18)
  1604.   DateOnly=left(DateOnly,11)
  1605. return
  1606. CHECKLPLAY:
  1607.   If Access = 23 Then do; MainCounter = 0; return; end
  1608.   If DATEONLY ~= LASTDPLAYED then do;Maincounter=0;return;end
  1609.   If Maincounter > Maxturns then do;Tr 'Sorry, you have used up all your turns for today.';
  1610.   tr 'Try again tommorrow.'
  1611.   call QUICKEXIT;end
  1612. return
  1613. AddNumbers:
  1614.   if access ~= 23 then call dial
  1615.   tr cls
  1616.   showfile misc||'AddNumber.Menu'
  1617.   Ss 'Enter Number: ';hk
  1618.   ans=upper(result);tr ans
  1619.   call nc
  1620.   if ans = 'Q' then call dial
  1621.    else if ans = '1' then numfile = 'local'
  1622.    else if ans = '2' then numfile = 'mainframe'
  1623.    else if ans = '3' then numfile = 'gov'
  1624.    else if ans = '4' then numfile = 'war'
  1625.    else call addnumbers
  1626.   if ~exists(phones''numfile) then do
  1627.     open nfile,(phones''numfile), 'W'
  1628.     writeln nfile,'1'
  1629.     mnx=1
  1630.   end
  1631.   else do
  1632.     call open nfile, (phones''numfile), 'R'
  1633.     telnum=readln(nfile)
  1634.     do i=1 to telnum
  1635.       locnm.i=readln(nfile)
  1636.       localnum.i=readln(nfile)
  1637.       locmg.i=readln(nfile)
  1638.       locwin.i=readln(nfile)
  1639.       locloss.i=readln(nfile)
  1640.     end
  1641.     call close nfile
  1642.     call open nfile, (phones''numfile), 'W'
  1643.     telnum=telnum+1
  1644.     call writeln nfile, telnum
  1645.   end
  1646.   tr CLS
  1647.   tr 'Enter the name:'; Query ':'
  1648.   locnm.telnum=result
  1649.   call nc
  1650.   tr 'Enter the number'; Query ':'
  1651.   localnum.telnum=result
  1652.   call nc
  1653.   tr 'Enter the storage in Megs';query ':'
  1654.   locmg.telnum=result
  1655.   call nc
  1656.   locwin.telnum=0
  1657.   locloss.telnum=0
  1658.   do i=1 to telnum
  1659.      call writeln nfile,locnm.i
  1660.      call writeln nfile,localnum.i
  1661.      call writeln nfile,locmg.i
  1662.      call writeln nfile,locwin.i
  1663.      call writeln nfile,locloss.i
  1664.   end
  1665.   call close nfile
  1666. call dial
  1667. WARDIAL:
  1668.   tr CLS
  1669.   If WD=1 then do
  1670.     tr 'WarDialer is already running!'
  1671.     return
  1672.   end
  1673.   showfile misc'wardial.txt'
  1674.   tr '';ss 'Run wardialer? '
  1675.   hk
  1676.   ans=upper(result)
  1677.   if ans ~= 'Y' then return
  1678.   tr 'Yes'
  1679.   if money<10000 then do
  1680.     tr 'You can''t afford it.'
  1681.     return
  1682.   end
  1683.   wd=1
  1684.   if access ~= 23 then money=money-10000
  1685.   tr ''; tr ''; tr 'Wardialer should have results ready by tommorrow.'
  1686.   tr 'Thank you for using Global WarDialer v1.0'
  1687.   call turns
  1688. return
  1689. CHECKWARDIAL:
  1690.   If (WD ~= 1) | ((Access ~= 23) & (Dateonly = LastDPlayed)) then return
  1691.   Tr 'Checking WarDialer Results...'
  1692.   call open file, (phones''war), 'R'
  1693.   wnum=readln(file)
  1694.   do i=1 to wnum
  1695.     locnm.i=readln(file)
  1696.     localnum.i=readln(file)
  1697.     locmg.i=readln(file)
  1698.     locwin.i=readln(file)
  1699.     locloss.i=readln(file)
  1700.   end
  1701.   call close file
  1702.   call open file, (phones''HAA), 'R'
  1703.     blah=readln(file)
  1704.     locnm.0=readln(file)
  1705.     localnum.0=readln(file)
  1706.     locmg.0=readln(file)
  1707.   call close file
  1708.   do
  1709.   wfnd=random(0,wnum%8, time('s'))
  1710.   If wfnd = 0 then do
  1711.     tr '';tr 'You found no numbers this time!'
  1712.     wd=0
  1713.     return
  1714.   end
  1715.   do i=1 to wfnd
  1716.     fndw=random(0,(wnum+2),time('s'))
  1717.     if fndw=wnum+1 || fndw=wnum+2 then fndw=0
  1718.     do j=1 to i-1
  1719.       if fndw=wn.j then i=i-1
  1720.     end
  1721.     wn.i=fndw
  1722.   end
  1723.   tr '';tr 'You found these numbers...  Write them down!'
  1724.   do i=1 to wfnd
  1725.     k=wn.i
  1726.     tr 'Name:['||locnm.k'] Phone Number:['||localnum.k'] Storage:['||locmg.k' Megs]'
  1727.   end
  1728.   tr '';Tr 'Hit Any Key to Continue '
  1729.   WD=0
  1730. return
  1731. GENERATEHAA:
  1732. call open file, (phones'HAA'), 'W'
  1733. call writeln file,'1'
  1734. call writeln file,'Hackers Assoc. of America'
  1735. do i=1 to 7;n.i=random(0,9,time('s'));end
  1736. call writeln file,'619'||n.1||n.2||n.3||n.4||n.5||n.6||n.7
  1737. call writeln file,'999';call writeln file,'0';call writeln file,'0'
  1738. call close file
  1739. do i=1 to 7;drop n.i;end
  1740. return
  1741. WINGAME:
  1742. logentry '-=>' REALNAME' won Hacker4.5!!! <=-'
  1743. if exists(misc'sys.win') then showfile misc||'sys.win'
  1744. if ~exists(misc'winners') then do
  1745.   call open file, (misc'winners'), 'W'
  1746.   call writeln file,'=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-='
  1747.   call writeln file,'- The Legendary Hacker Hall of Fame -'
  1748.   call writeln file,'=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-='
  1749.   call writeln file,''
  1750. end
  1751. Else call open file,(misc'winners'), 'A'
  1752. call Writeln File, 'Name:'||Alias' EXP:'||xrp' Date:'||dateonly
  1753. call close file
  1754. tr ''
  1755. call generatehaa
  1756. address command 'delete' play'#?'
  1757. address command 'delete' mess'#?'
  1758. address command 'delete' bnk'#?'
  1759. call quickexit
  1760. return
  1761. SCAN:
  1762. j=0;showfile misc'sys.scanner'
  1763. ss 'Do you wish to do a fight scan? '
  1764. hk;ans=upper(result)
  1765. if ans ~= 'Y' then return
  1766. tr 'Yes'; tr ''
  1767. if (money < 15000) & (access ~= 23) then do;tr '';tr 'You can not afford it!';tr '';return;end
  1768. if access ~= 23 then money=money-15000
  1769. call open file, (play'Aliases'), 'R'
  1770. do i=1 to totalusers
  1771.   tempa=readln(file);tempb=readln(file)
  1772.   call open nfile, (play''tempb), 'R'
  1773.   oalias=readln(nfile);omoney=readln(nfile);omegs=readln(nfile)
  1774.   if (omegs > 0) & (oalias ~= alias) then do;j=j+1;tr ''||j')' oalias;end
  1775.   call close nfile
  1776. end
  1777. call close file
  1778. if j=0 then do; tr 'Everyone is trashed!'; tr ''; end
  1779. else tr 'End of scan.'
  1780. tr ''
  1781. return
  1782.  
  1783.